#pragma once

#include "gui.h"

// Switch 类，继承自 UI_Object，表示一个开关
class Switch : public UI_Object
{
public:
  // 枚举类型，表示开关的状态
  enum change_t { OFF, ON };

  // 定义开关状态改变回调函数的类型
  typedef void (*on_off_cb_t)(lv_event_t* e);

  // 构造函数，初始化开关
  Switch(UI_Object* parent);

  // 析构函数，释放资源
  ~Switch();

  // 设置开关状态改变时的回调函数
  void on_switch_change(Switch::change_t type, Switch::on_off_cb_t cb);

private:
  UI_Object* parent = NULL;  // 父对象指针
  lv_obj_t* label = NULL;    // 标签对象指针，用于显示文本
  on_off_cb_t off_cb = NULL; // 关闭状态回调函数指针
  on_off_cb_t on_cb = NULL;  // 打开状态回调函数指针
};